/*
 * Copyright (C) 2014 Patrick Mours
 * SPDX-License-Identifier: BSD-3-Clause OR MIT
 */

#pragma once

#include <glad/wgl.h>

#undef wglChoosePixelFormatARB
#undef wglGetPixelFormatAttribivARB
#undef wglGetPixelFormatAttribfvARB
#undef wglCreateContextAttribsARB
#undef wglCreatePbufferARB
#undef wglDestroyPbufferARB
#undef wglGetPbufferDCARB
#undef wglReleasePbufferDCARB

extern "C" void APIENTRY glBindBuffer(GLenum target, GLuint buffer);
extern "C" void APIENTRY glBindBufferBase(GLenum target, GLuint index, GLuint buffer);
extern "C" void APIENTRY glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
extern "C" void APIENTRY glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
extern "C" void APIENTRY glBindBuffersRange(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLintptr *sizes);
extern "C" void APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer);
extern "C" void APIENTRY glBindFramebufferEXT(GLenum target, GLuint framebuffer);
extern "C" void APIENTRY glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
extern "C" void APIENTRY glBindImageTextures(GLuint first, GLsizei count, const GLuint *textures);
extern "C" void APIENTRY glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture);
extern "C" void APIENTRY glBindProgramARB(GLenum target, GLuint program);
extern "C" void APIENTRY glBindTexture(GLenum target, GLuint texture);
extern "C" void APIENTRY glBindTextureUnit(GLuint unit, GLuint texture);
extern "C" void APIENTRY glBindTextures(GLuint first, GLsizei count, const GLuint *textures);
extern "C" void APIENTRY glBindVertexArray(GLuint array);
extern "C" void APIENTRY glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
extern "C" void APIENTRY glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
extern "C" void APIENTRY glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
extern "C" void APIENTRY glBlendEquation(GLenum mode);
extern "C" void APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
extern "C" void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor);
extern "C" void APIENTRY glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
extern "C" void APIENTRY glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
extern "C" void APIENTRY glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
extern "C" void APIENTRY glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage);
extern "C" void APIENTRY glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
extern "C" void APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
extern "C" void APIENTRY glClear(GLbitfield mask);
extern "C" void APIENTRY glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
extern "C" void APIENTRY glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
extern "C" void APIENTRY glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
extern "C" void APIENTRY glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
extern "C" void APIENTRY glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
extern "C" void APIENTRY glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
extern "C" void APIENTRY glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
extern "C" void APIENTRY glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
extern "C" void APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
extern "C" void APIENTRY glClearDepth(GLclampd depth);
extern "C" void APIENTRY glClearStencil(GLint s);
extern "C" void APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
extern "C" void APIENTRY glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
extern "C" void APIENTRY glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
extern "C" void APIENTRY glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
extern "C" void APIENTRY glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
extern "C" void APIENTRY glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
extern "C" void APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
extern "C" void APIENTRY glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
extern "C" void APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
extern "C" void APIENTRY glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glCullFace(GLenum mode);
extern "C" void APIENTRY glDeleteBuffers(GLsizei n, const GLuint *buffers);
extern "C" void APIENTRY glDeleteProgram(GLuint program);
extern "C" void APIENTRY glDeleteProgramsARB(GLsizei n, const GLuint *programs);
extern "C" void APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
extern "C" void APIENTRY glDeleteTextures(GLsizei n, const GLuint *textures);
extern "C" void APIENTRY glDeleteVertexArrays(GLsizei n, const GLuint *arrays);
extern "C" void APIENTRY glDepthFunc(GLenum func);
extern "C" void APIENTRY glDepthMask(GLboolean flag);
extern "C" void APIENTRY glDepthRange(GLclampd zNear, GLclampd zFar);
extern "C" void APIENTRY glDisable(GLenum cap);
extern "C" void APIENTRY glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
extern "C" void APIENTRY glDispatchComputeIndirect(GLintptr indirect);
extern "C" void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count);
extern "C" void APIENTRY glDrawArraysIndirect(GLenum mode, const GLvoid *indirect);
extern "C" void APIENTRY glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
extern "C" void APIENTRY glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance);
extern "C" void APIENTRY glDrawBuffer(GLenum mode);
extern "C" void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
extern "C" void APIENTRY glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
extern "C" void APIENTRY glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid *indirect);
extern "C" void APIENTRY glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
extern "C" void APIENTRY glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
extern "C" void APIENTRY glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance);
extern "C" void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance);
extern "C" void APIENTRY glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
extern "C" void APIENTRY glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
extern "C" void APIENTRY glEnable(GLenum cap);
extern "C" void APIENTRY glFinish();
extern "C" void APIENTRY glFlush();
extern "C" void APIENTRY glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level);
extern "C" void APIENTRY glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern "C" void APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern "C" void APIENTRY glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint layer);
extern "C" void APIENTRY glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
extern "C" void APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
extern "C" void APIENTRY glFrontFace(GLenum mode);
extern "C" void APIENTRY glGenerateMipmap(GLenum target);
extern "C" void APIENTRY glGenerateTextureMipmap(GLuint texture);
extern "C" void APIENTRY glGenTextures(GLsizei n, GLuint *textures);
extern "C" void APIENTRY glGetBooleanv(GLenum pname, GLboolean *params);
extern "C" void APIENTRY glGetDoublev(GLenum pname, GLdouble *params);
extern "C" void APIENTRY glGetFloatv(GLenum pname, GLfloat *params);
extern "C" void APIENTRY glGetIntegerv(GLenum pname, GLint *params);
extern "C" auto APIENTRY glGetError() -> GLenum;
extern "C" void APIENTRY glGetPointerv(GLenum pname, GLvoid **params);
extern "C" auto APIENTRY glGetString(GLenum name) -> const GLubyte *;
extern "C" void APIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
extern "C" void APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
extern "C" void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
extern "C" void APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params);
extern "C" void APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint *params);
extern "C" void APIENTRY glHint(GLenum target, GLenum mode);
extern "C" auto APIENTRY glIsEnabled(GLenum cap) -> GLboolean;
extern "C" auto APIENTRY glIsTexture(GLuint texture) -> GLboolean;
extern "C" void APIENTRY glLineWidth(GLfloat width);
extern "C" void APIENTRY glLinkProgram(GLuint program);
extern "C" void APIENTRY glLogicOp(GLenum opcode);
extern "C" auto APIENTRY glMapBuffer(GLenum target, GLenum access) -> void *;
extern "C" auto APIENTRY glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLenum access) -> void *;
extern "C" auto APIENTRY glMapNamedBuffer(GLuint buffer, GLenum access) -> void *;
extern "C" auto APIENTRY glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLenum access) -> void *;
extern "C" void APIENTRY glMultiDrawArrays(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
extern "C" void APIENTRY glMultiDrawArraysIndirect(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
extern "C" void APIENTRY glMultiDrawElements(GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const *indices, GLsizei drawcount);
extern "C" void APIENTRY glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid *const *indices, GLsizei drawcount, const GLint *basevertex);
extern "C" void APIENTRY glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
extern "C" void APIENTRY glNamedBufferData(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
extern "C" void APIENTRY glNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
extern "C" void APIENTRY glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data);
extern "C" void APIENTRY glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glNamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glPixelStoref(GLenum pname, GLfloat param);
extern "C" void APIENTRY glPixelStorei(GLenum pname, GLint param);
extern "C" void APIENTRY glPointSize(GLfloat size);
extern "C" void APIENTRY glPolygonMode(GLenum face, GLenum mode);
extern "C" void APIENTRY glPolygonOffset(GLfloat factor, GLfloat units);
extern "C" void APIENTRY glProgramStringARB(GLenum target, GLenum format, GLsizei length, const GLvoid *string);
extern "C" void APIENTRY glReadBuffer(GLenum mode);
extern "C" void APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
extern "C" void APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glScissorArrayv(GLuint first, GLsizei count, const GLint *v);
extern "C" void APIENTRY glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
extern "C" void APIENTRY glScissorIndexedv(GLuint index, const GLint *v);
extern "C" void APIENTRY glShaderSource(GLuint shader, GLsizei count, const GLchar *const *string, const GLint *length);
extern "C" void APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask);
extern "C" void APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
extern "C" void APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
extern "C" void APIENTRY glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
extern "C" void APIENTRY glStencilMask(GLuint mask);
extern "C" void APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask);
extern "C" void APIENTRY glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer);
extern "C" void APIENTRY glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer);
extern "C" void APIENTRY glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
extern "C" void APIENTRY glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
extern "C" void APIENTRY glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTexImage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTexImage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param);
extern "C" void APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params);
extern "C" void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param);
extern "C" void APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint *params);
extern "C" void APIENTRY glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
extern "C" void APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
extern "C" void APIENTRY glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
extern "C" void APIENTRY glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
extern "C" void APIENTRY glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
extern "C" void APIENTRY glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
extern "C" void APIENTRY glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
extern "C" void APIENTRY glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
extern "C" void APIENTRY glTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
extern "C" void APIENTRY glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
extern "C" void APIENTRY glUniform1f(GLint location, GLfloat v0);
extern "C" void APIENTRY glUniform2f(GLint location, GLfloat v0, GLfloat v1);
extern "C" void APIENTRY glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
extern "C" void APIENTRY glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
extern "C" void APIENTRY glUniform1i(GLint location, GLint v0);
extern "C" void APIENTRY glUniform2i(GLint location, GLint v0, GLint v1);
extern "C" void APIENTRY glUniform3i(GLint location, GLint v0, GLint v1, GLint v2);
extern "C" void APIENTRY glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
extern "C" void APIENTRY glUniform1ui(GLint location, GLuint v0);
extern "C" void APIENTRY glUniform2ui(GLint location, GLuint v0, GLuint v1);
extern "C" void APIENTRY glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2);
extern "C" void APIENTRY glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
extern "C" void APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat *value);
extern "C" void APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat *value);
extern "C" void APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat *value);
extern "C" void APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat *value);
extern "C" void APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint *value);
extern "C" void APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint *value);
extern "C" void APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint *value);
extern "C" void APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint *value);
extern "C" void APIENTRY glUniform1uiv(GLint location, GLsizei count, const GLuint *value);
extern "C" void APIENTRY glUniform2uiv(GLint location, GLsizei count, const GLuint *value);
extern "C" void APIENTRY glUniform3uiv(GLint location, GLsizei count, const GLuint *value);
extern "C" void APIENTRY glUniform4uiv(GLint location, GLsizei count, const GLuint *value);
extern "C" void APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern "C" void APIENTRY glUnmapBuffer(GLenum target);
extern "C" void APIENTRY glUnmapNamedBuffer(GLuint buffer);
extern "C" void APIENTRY glUseProgram(GLuint program);
extern "C" void APIENTRY glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
extern "C" void APIENTRY glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
extern "C" void APIENTRY glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
extern "C" void APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
extern "C" void APIENTRY glViewportArrayv(GLuint first, GLsizei count, const GLfloat *v);
extern "C" void APIENTRY glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
extern "C" void APIENTRY glViewportIndexedfv(GLuint index, const GLfloat *v);
